perm filename AAMIPC.SAI[S,HE] blob
sn#662096 filedate 1982-06-04 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY COPYTO3,ABSVAL
C00003 00003 PROCEDURE COPYTO3(INTEGER CHAN)
C00005 00004 INTERNAL PROCEDURE ABSVAL(INTEGER B,C)
C00006 00005 END "AAMIPC"
C00007 ENDMK
C⊗;
ENTRY COPYTO3,ABSVAL;
BEGIN "AAMIPC"
COMMENT These are routines useful for using the image processor card.
Here, the definition of "useful" is the fact that these routines
have been used by more than one program. ;
REQUIRE "GRNDEF[HDR,HE]" SOURCE_FILE;
REQUIRE "CRDFNC.ENV[HDR,HE]" SOURCE_FILE;
COMMENT This must be loaded with CRDFNC[S,HE] to work;
PROCEDURE COPYTO3(INTEGER CHAN);
BEGIN "COPYTO3"
COMMENT Copy the contents of channel CHAN to channel 3. ;
INTEGER I;
INTEGER ARRAY TBL[0:255];
FOR I ← 0 STEP 1 UNTIL 255 DO TBL[I] ← I;
IPCMAP(ALUBLOW LOR LOADNOW,TBL,256);
IPCSWITCH(0,0,0,CHAN,0);
IPCCONTROL(6,CLAMP01 LOR ALUOR);
IPCCTRLMODE(NOSWITCH LOR CLAMPOUTPUT);
IPCWRITE(1 LSH 3,NORMALWRITE)
END "COPYTO3";
PROCEDURE COPYTONOT3(INTEGER ICHAN,OCHAN);
BEGIN "COPYTONOT3"
COMMENT Copy the contents of channel ICHAN to channel OCHAN, where OCHAN
is not 3. (uses high-order byte of image proc to do the copy) ;
INTEGER I;
INTEGER ARRAY TBL[0:255];
FOR I ← 0 STEP 1 UNTIL 255 DO TBL[I] ← I;
IPCMAP(ALUBHIGH LOR LOADNOW,TBL,256);
IPCSWITCH(0,0,ICHAN,0,0);
IPCCONTROL(6,CLAMP01 LOR ALUOR);
IPCCTRLMODE(NOSWITCH LOR CLAMPOUTPUT);
IPCWRITE(1 LSH OCHAN,NORMALWRITE)
END "COPYTONOT3";
INTERNAL PROCEDURE COPY(INTEGER A,B);
BEGIN "COPY"
COMMENT Copy one channel to another. ;
IF A=B THEN RETURN
ELSE IF B=3 THEN COPYTO3(A)
ELSE COPYTONOT3(A,B)
END "COPY";
INTERNAL PROCEDURE ABSVAL(INTEGER B,C);
BEGIN "ABSVAL"
COMMENT Replace the 16-bit number in (B,C) with its absolute value. Note
that C must be 3... ;
INTEGER I;
INTEGER ARRAY TBL[0:255];
FOR I ← 0 STEP 1 UNTIL 255 DO TBL[I] ← I;
IPCMAP(ALUAHIGH LOR ALUALOW LOR ALUBHIGH LOR ALUBLOW LOR LOADNOW,TBL,256);
IPCSWITCH(B,C,B,C,0);
IPCCONTROL(6,CLAMP01 LOR ALUOR); COMMENT For positive numbers;
IPCCONTROL(7,CLAMP01 LOR TAMINUSB); COMMENT For negative numbers;
IPCCTRLMODE(MSBTAB0SWITCH LOR CLAMPOUTPUT);
IPCWRITE((1 LSH B) LOR (1 LSH C), NORMALWRITE)
END "ABSVAL";
END "AAMIPC"